Skip to content

Conversation

@tain198127
Copy link

PR: OpenAPI访问控制功能增强 (Issue #9072)

版本号:3.8.3
分支:

issues_9072-->springboot3
我是基于springboot3进行的扩展。

问题描述:

请需要增加openapi白名单
image

📋 PR概述

本PR针对Issue #9072进行了OpenAPI访问控制功能的全面增强,将原有的简单IP黑名单机制升级为功能完善的访问清单系统,
支持白名单/黑名单双模式,并增加了IP正则表达式匹配和完整的单元测试覆盖。

🔄 主要变更

  1. 数据库结构升级
  • 新增字段:
    • list_mode: 访问清单模式 (WHITELIST/BLACKLIST)
    • allowed_list: 访问清单配置 (支持IP、CIDR、域名)
    • comment: 访问清单备注说明
    • dns_cache_ttl_seconds: DNS缓存TTL设置
    • ip_version: IP版本支持 (IPv4/IPv6/Dual)
    • enable_strict: 严格模式开关
  • 数据迁移:兼容历史数据,将老记录统一设置为WHITELIST模式
  • 索引优化:新增update_time索引提升查询性能
  1. 后端功能增强
  • 访问控制逻辑重构:
    • 支持白名单/黑名单双模式切换
    • IP、CIDR网段、域名多维度访问控制
    • 支持通配符匹配 (如 10.2.3.*)
    • 支持范围匹配 (如 10.2.3.[1-234])
  • API过滤器优化:
    • 重构ApiAuthFilter访问控制逻辑
    • 新增IP/CIDR匹配算法
    • 新增域名解析匹配功能
  1. 前端界面完善
  • 访问清单配置界面:
    • 友好的文本输入框,支持多行输入
    • 实时标签预览,直观展示配置项
    • 一键整理功能,自动格式化配置
    • 输入提示和格式验证
  • 表单增强:
    • 模式选择器 (白名单/黑名单)
    • 备注说明字段
    • IP版本和缓存时间配置
  1. 测试覆盖完善
  • 单元测试:新增918行测试代码
  • 测试覆盖范围:
    • 访问清单核心逻辑测试
    • IP/CIDR匹配算法测试
    • 域名解析功能测试
    • 边界条件和异常场景测试
    • 测试覆盖率超过80%
image

📊 变更统计

  • 总文件变更: 9个文件
  • 代码行数: +1,437行, -23行
  • 测试覆盖率: 新增100%核心逻辑覆盖

🧪 测试验证

功能测试

  • ✅ 白名单模式访问控制
  • ✅ 黑名单模式访问控制
  • ✅ IP、CIDR、域名匹配
  • ✅ 通配符和范围匹配
  • ✅ 前端表单交互和数据验证

单元测试

  • ✅ 918行测试代码,覆盖核心逻辑
  • ✅ 边界条件和异常场景测试
  • ✅ Mock数据验证

🚀 部署说明

  1. 数据库升级:
    -- 执行 Flyway 迁移脚本
    V3.8.3_1__openapi_accesslist.sql
  2. 应用部署:
    - 后端:替换jar包并重启
    - 前端:构建并部署新版本
  3. 配置验证:
    - 检查访问清单配置界面
    - 验证IP控制功能正常

🔒 安全增强

  • 更精细的访问控制粒度
  • 支持CIDR网段和域名控制
  • 增加严格模式选项
  • 完善的审计日志记录

📱 用户体验

  • 直观的配置界面
  • 实时配置预览
  • 智能格式整理
  • 详细的帮助提示

@shao1chuan
Copy link

@claude 审核代码

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants